package com.leshowski.agendaUCV2.facebook.principal;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

import com.leshowski.agendaUCV2.comun.ManejaEventosAgenda;
import com.leshowski.agendaUCV2.comun.ManejaProperties;
import com.leshowski.agendaUCV2.facebook.control.ManejaFacebook;
import com.leshowski.agendaUCV2.modelo.EventoAgenda;

public class EjecutaFacebook {

	public static void main(String[] args) throws Exception {
		
		Logger log = Logger.getLogger(EjecutaFacebook.class);
		
		String rutaXML = ManejaProperties.entregaValor("com/leshowski/agendaUCV2/facebook/conf/rutas.properties", "rutaXML");
		String rutaPropertiesLog4j = "com/leshowski/agendaUCV2/facebook/conf/log4j.properties";
		
		PropertyConfigurator.configure(EjecutaFacebook.class.getClassLoader().getResource(rutaPropertiesLog4j));
		
		ManejaEventosAgenda manejaEventosAgenda = new ManejaEventosAgenda(rutaXML, rutaPropertiesLog4j);
		
		//obtiene el evento a publicar
		EventoAgenda eventoAgendaAPublicar = manejaEventosAgenda.obtieneEventoApublicar();
		
		//Publica el evento en facebook
		try{
			publicaEventoAgenda(eventoAgendaAPublicar);
		}catch(Exception e){
			log.error("Error al publicar el evento en facebook:"+e);
		}
		
		//actualiza el XML fuente
		manejaEventosAgenda.actualizaXMLEventosAgenda();
	}
	
	public static void publicaEventoAgenda(EventoAgenda eventoAPublicar) throws Exception{
		
		//Se obtiene el accesToken de la cuenta due�o
		String accessTokenDueno    = ManejaProperties.entregaValor("com/leshowski/agendaUCV2/facebook/conf/facebook.properties", "accesToken");
		String nombreDondePublicar = ManejaProperties.entregaValor("com/leshowski/agendaUCV2/facebook/conf/facebook.properties", "nombreDondePublicar");
		
		//Se inicia el objeto de Facebook
		ManejaFacebook manejaFacebook = new ManejaFacebook(accessTokenDueno, nombreDondePublicar);
		manejaFacebook.publicaFacebook(eventoAPublicar.getHorario(),
									   eventoAPublicar.getUrlImagen(),
									   eventoAPublicar.getUrl(),
									   eventoAPublicar.getTitulo(),
									   eventoAPublicar.getLugar());
				
	}
}
